﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NakedObjects;
using System.ComponentModel;

namespace RTC.Modelo.Entidades
{
    [DisplayName("Experiencia")]
    public abstract class Experiencia: Entidad
    {
        #region Atributos

        [Hidden]
        public virtual int Id { set; get; }

        [Disabled, DisplayName("Solicitud")]
        public virtual Solicitud Solicitud { set; get; }

        #endregion

        public string IconName()
        {
            return "books.png";
        }

        [DisplayName("Nuevo Fichero")]
        public virtual Fichero NewFichero() {
            var fichero = Container.NewTransientInstance<Fichero>();
            fichero.Experiencia = this;
            return fichero;
        }

        #region Ficheros (collection)
        private ICollection<Fichero> _Ficheros = new List<Fichero>();

        public virtual ICollection<Fichero> Ficheros
        {
            get
            {
                return _Ficheros;
            }
            set
            {
                _Ficheros = value;
            }
        }

        [DisplayName("Eliminar Fichero")]
        public void RemoveFromFicheros(Fichero value)
        {
            if (_Ficheros.Contains(value))
            {
                _Ficheros.Remove(value);
            }
        }

        public IList<Fichero> Choices0RemoveFromFicheros()
        {
            return _Ficheros.ToList();
        }
        #endregion

        #region Comentario (collection)
        private ICollection<ComentarioExperiencia> _Comentario = new List<ComentarioExperiencia>();

        public virtual ICollection<ComentarioExperiencia> Comentario
        {
            get
            {
                return _Comentario;
            }
            set
            {
                _Comentario = value;
            }
        }

        [DisplayName("Eliminar Comentario")]
        public void RemoveFromComentario(ComentarioExperiencia value)
        {
            if (_Comentario.Contains(value))
            {
                _Comentario.Remove(value);
            }
        }

        public IList<ComentarioExperiencia> Choices0RemoveFromComentario()
        {
            return _Comentario.ToList();
        }

        [DisplayName("Nuevo Comentario")]
        public virtual ComentarioExperiencia CrearComentarioExperiencia()
        {
            ComentarioExperiencia c = Container.NewTransientInstance<ComentarioExperiencia>();
            c.Experiencia = this;
            return c;
        }
        
        #endregion

        [Hidden,Disabled, DisplayName("Fecha Modificacion")]
        public virtual DateTime ModifiedDate { get; set; }

        [Hidden]
        protected override void SetModifiedDate()
        {
            ModifiedDate = DateTime.Now;
        }
    }
}
